﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Stateless
{
    public partial class StateMachine<TState, TTrigger, TData0>
    {
        internal abstract class TriggerBehaviour
        {
            readonly TTrigger _trigger;

            protected TriggerBehaviour(TTrigger trigger)
            {
                _trigger = trigger;
            }

            public TTrigger Trigger { get { return _trigger; } }

            public abstract bool Guard(TData0 args);
            public abstract bool ResultsInTransitionFrom(TState source, TData0 args, out TState destination);
        }
    }
}
